//
// map.cpp for towerdefense
// 
// Made by benoit guina
// Login   <guina_b@epitech.net>
//

#include <fstream>
#include "building.hpp"
#include "map.hpp"

Map::Map() {

}

int Map::read_file(const std::string& filename) 
{
	std::ifstream is;
	
	is.open(filename.c_str());
	if (is.is_open())
	{
		char c;
		
		
		m_map.resize(1); // met une ligne dans le tab2d map
		
		// m_map[x][i] x= nb_pushback / i = 0 quand tu pushback
		while (is.get(c))
		{
			if (c == '\n')
				m_map.push_back(std::vector<Square>()); // si le caractere est un '\n' on avance d'une ligne
			else
			{
				Square new_square;
				Building* new_building; // creation du pere de la case (BUILDING)
				
				new_building = Building::factory(c); // Renvoie un pointeur null si ce n'est pas un building sinon building OOOOOK :D
				if (new_building) // si le caractere est un building( pointeur != NULL)
					new_square.set_building(new_building); // attribution du type du building a la case courante
				else if (new_square.read(c) != 0) // si le caractere est invalide on retourne une erreur sinon on creer la nouvelle case sans attribuer de building
					return -1; // FUCKING MAP GO TO HELL MOTHERFUCKERZZZ
				
				m_map.back().push_back(new_square);
			}
		}
		is.close();
	}
	else
		return -1; //FIXME: Code d'erreur peu explicite pour le reste du programme
	
	return 0;
}

int Map::set_building(Building* building, size_t x, size_t y) 
{
	return 0;
}
